﻿namespace FFF.Test.Application.AppServices.FW
{
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    using FFF.Test.Application.AppServices;
    using FFF.Test.Application.PublicService.AppService.TreeGrid;
    using FFF.Test.Application.Repositories.FW;
    using FFF.Test.Entity.FW;
    using FFF.Test.Entity.FW.Dto;
    using FFF.Test.Entity.FW.View;

    /// <summary>
    /// 用户表应用层服务接口
    /// </summary>
    public interface IFWUserAppService :
        IYdmAbpCurdAppService<FWUserEntity, Guid, FWUserCreateInputDto, FWUserUpdateInputDto, FWUserDto, ViewFWUser, ViewFWUser>
    {
        /// <summary>
        /// 2.001 注册用户(于大明)
        /// </summary>
        /// <param name="inDto">注册用户输入dto</param>
        /// <returns>注册用户输出dto</returns>
        Task<RegisterUserOutDto> RegisterUser(RegisterUserInDto inDto);

        /// <summary>
        /// 1.009 通过手机号修改密码(于大明)
        /// </summary>
        /// <param name="inDto">通过手机号修改密码输入dto</param>
        /// <returns>通过手机号修改密码输出dto</returns>
        Task<UpdatePwdByPhoneOutDto> UpdatePwdByPhone(UpdatePwdByPhoneInDto inDto);

        /// <summary>
        /// 1.004 获取站内模块信息(于大明)
        /// </summary>
        /// <param name="inDto">获取站内模块信息输入dto</param>
        /// <returns>获取站内模块信息输出dto</returns>
        Task<GetUserSetFunctionOutDto> GetUserSetFunction(GetUserSetFunctionInDto inDto);

        /// <summary>
        /// 1.003 用户登录(于大明)
        /// </summary>
        /// <param name="inDto">用户登录输入dto</param>
        /// <returns>用户登录输出dto</returns>
        Task<UserLoginOutDto> UserLogin(UserLoginInDto inDto);

        /// <summary>
        /// 2.002 用户退出登录(于大明)
        /// </summary>
        void UserLoginOut();
    }
}
